Relatório : Resultados experimentais da válvula proporcional para controle de fluxo de ar em pulmões artificiais.

Índice

Introdução

O presente relatório apresenta resultados dos testes de ventilação, bem como os resultados obtidos utilizando a válvula proporcional para controle de fluxo, em 03 de abril de 2023. Os problemas enfrentados e soluções testadas são apresentados na seção seguinte.

Methodologia

A norma ABNT NBR ISO 80601-2-12-2014 especifica a confguração típica do ensaio da precisão das ventilações tipo volume e pressão controlada (VCV e PCV, respectivamente), segundo o esquemático abaixo.
Como atualmente não há mistura com gás rico em oxigênio, o sensor de oxigênio foi dispensado para os ensaios atuais.O esquemático da bancada experimental pode ser visto na figura abaixo:
Todos os ensaios levam em conta resistências, complacências, volumes (VCV) e pressões (PCV) especificados para cada modo de controle ventilatório, conforme as tabelas da norma.
O modelo de sistema respiratório utilizado foi o pulmão de teste de ventilação artificial QuickLung®, que posssui resistências de 5, 20, 50 cmH2O/L/s e complacências de 50, 20, 10 mL/cm H2O. Dessa forma, foi possível realizar os ensaios dos 8 primeiros itens das tabelas de PCV e VCV da norma.
% DADOS (memória)
Warning: Unable to locate a personal folder for $documents\MATLAB
clear all
cd 'G:\My Drive\PEB\Dissertação\Experimentos\EXP10abr750ml'
files = dir('*.bin');
mecanica
ans = 0
for i=1:length(files)
impdasbin('SILENCIOSO', cd, files(i).name, 'CALIBRADOS');
trechos = detciclo('SILENCIOSO','Fluxo [lps]',0.00,1,1,.05);
calcintegral('SILENCIOSO','ON', 'VCOR');
assignin('base',erase(files(i).name,'.bin'),Sinal);
ScriptVentilador
resultados(i,:) = mean(Resultado.Ventilador(:,2:end), 1);
end
ans = 0
ans = 0
ans = 0
ans = 0
ans = 0
ans = 0
ans = 0
ans = 0
ans = 0
ans = 0
ans = 0
ans = 0
ans = 0
ans = 0
ans = 0
ans = 0
close

Problemas atuais

Solução testada

Resultados

Tabela

Na tabela abaixo encontram-se os resultados dos ensaios realizados segundo a norma, com excessão dos valores de PEEP (pressão expiratória final positiva) que foi 0 cmH2O para todos:
RC = ["R20C10";"R20C20";"R20C20";"R20C50";"R50C10";"R50C20";"R5C20";"R5C50";"R20C10";"R20C20";"R20C20";"R20C50";"R50C10";"R50C20";"R5C20";"R5C50"];
MODO = ["PCV";"PCV";"PCV";"PCV";"PCV";"PCV";"PCV";"PCV";"VCV";"VCV";"VCV";"VCV";"VCV";"VCV";"VCV";"VCV"];
ALVO = [25 ;15 ;25 ;15 ;30;25;25;10;.200;.300;.500;.500;.300;.300;.500;.500];
VariableNames = ["MODO";'RC';'FluxoMax_lps';'FluxoMedio_lps';'Pmax_cmH2O';'Pmin_cmH2O';'FR_cpm';'Tins_s';'Texp_s';'IE';'Vins_ml';'Vexp_ml'];
resultados = [MODO RC resultados];
resultados = array2table(resultados,'VariableNames', VariableNames);
Erro(1:8) = rdivide(ALVO(1:8)- str2double(resultados.Pmax_cmH2O(1:8)),ALVO(1:8))*100;
Erro(9:16) = rdivide(ALVO(9:end) - str2double(resultados.Vins_ml(9:16)),ALVO(9:16))*100;
ERRO = array2table(transpose(Erro),'VariableNames', "ERRO");
resultados = [resultados ERRO];
resultados = movevars(resultados,"ERRO",'After',"RC");
% writetable(resultados,'resultados.xlsx')
resultados
resultados = 16×13 table
 MODORCERROFluxoMax_lpsFluxoMedio_lpsPmax_cmH2OPmin_cmH2OFR_cpmTins_sTexp_sIEVins_mlVexp_ml
1"PCV""R20C10"-88.5832"1.40968""0.50584""47.1458""-0.272253""20.2894""0.842917""2.13583""2.6016""0.42278""0.420979"
2"PCV""R20C20"-59.4913"1.00106""0.372602""23.9237""-0.302373""20.1847""0.998158""1.97868""1.98254""0.372815""0.372385"
3"PCV""R20C20"-61.0744"1.41295""0.565627""40.2686""-0.264649""20.1165""1.0045""1.98025""1.97133""0.569571""0.568774"
4"PCV""R20C50"-45.4887"1.11314""0.636786""21.8233""0.186697""20.0549""1.00947""1.98289""1.96429""0.64457""0.64187"
5"PCV""R50C10"-88.1243"1.03212""0.326308""56.4373""-0.272042""20.0312""0.994342""2.00158""2.01645""0.325036""0.32201"
6"PCV""R50C20"-89.4124"0.960492""0.343776""47.3531""-0.217826""20.3359""0.990125""1.96762""2.00385""0.341011""0.338213"
7"PCV""R5C20"-84.9976"1.82407""1.10494""46.2494""-0.280257""20.0045""0.951667""2.04778""2.15191""1.05429""1.04862"
8"PCV""R5C50"-60.9100"1.16949""0.794414""16.091""0.0767489""20.1961""0.991316""1.98224""2.01611""0.790831""0.788728"
9"VCV""R20C10"12.3580"0.229852""0.173599""18.2823""-0.275833""20.1245""1.00711""1.97658""1.9627""0.175284""0.175691"
10"VCV""R20C20"4.4870"0.377846""0.283722""15.4387""-0.268251""20.2129""1.00687""1.96725""1.95392""0.286539""0.286062"
Onde,

Curvas

Abaixo encontram-se trechos de curvas de fluxo, pressão de boca e pressão a montante (150 cmH2O), mostrando a resposta do controlador para os diferentes sistemas respiratórios. Os s (volume para VCV e pressão de boca para PCV) estão indicados nos títulos entre parênteses, sendo que cada ciclo tem em média 3 segundos com uma fase inspiratória de aproximadamente 1 segundo.
As curvas completas de todos os ensaios podem ser encontradas no Apêndice A.

Testes VCV

Sinal = VCV_R5C50_500ml;
t = [0:1/Configuracao.FrequenciaAmostragem:1/Configuracao.FrequenciaAmostragem*(size(Sinal.Dado(:,1))-1)];
%[0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
subplot(2,1,1)
plot(t,VCV_R5C50_500ml.Dado(:,1))
title('VCV R5C50 ( 500 ml)')
ylabel('Fluxo [lps]')
xlim(x);
subplot(2,1,2)
plot(t,VCV_R5C50_500ml.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x);
xlabel('Tempo (s)')
xlim(x);
Sinal = VCV_R20C20_300ml;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
subplot(2,1,1)
plot(t,Sinal.Dado(:,1))
title('VCV R20C20 ( 300 ml)')
ylabel('Fluxo [lps]')
xlim(x);
subplot(2,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x);
Sinal = VCV_R20C50_500ml;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22))-5 t(Trechos(26))-5];
subplot(2,1,1)
plot(t,Sinal.Dado(:,1))
title('VCV R20C50 ( 500 ml)')
ylabel('Fluxo [lps]')
xlim(x);
subplot(2,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x);
Sinal = VCV_R50C10_300ml;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
subplot(2,1,1)
plot(t,Sinal.Dado(:,1))
title('VCV R50C10 ( 300 ml)')
ylabel('Fluxo [lps]')
xlim(x);
subplot(2,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x);

Testes PCV

Sinal = PCV_R5C50_10cmH2O;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
subplot(2,1,1)
plot(t,Sinal.Dado(:,1))
title('PCV R5C50 ( 10 cmH2O)')
ylabel('Fluxo [lps]')
xlim(x);
subplot(2,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x);
Sinal = PCV_R20C20_15cmH2O;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
subplot(2,1,1)
plot(t,Sinal.Dado(:,1))
title('PCV R20C20 ( 15 cmH2O)')
ylabel('Fluxo [lps]')
xlim(x);
subplot(2,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x);
Sinal = PCV_R20C50_15cmH2O;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
subplot(2,1,1);
plot(t,Sinal.Dado(:,1))
title('PCV R20C50 ( 15 cmH2O)')
ylabel('Fluxo [lps]')
xlim(x);
subplot(2,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x);
Sinal = PCV_R50C10_30cmH2O;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
subplot(2,1,1)
plot(t,Sinal.Dado(:,1))
title('PCV R50C10 ( 30 cmH2O)')
ylabel('Fluxo [lps]')
xlim(x);
subplot(2,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x);

Conclusão

-

Apêndice A (curvas completas)

Sinal = VCV_R5C50_500ml;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
% fig=gcf;
% fig.Position(3:4)=[1080,400];
xlim(x)
subplot(4,1,1)
plot(t,Sinal.Dado(:,1))
title('VCV R5C50 ( 500 ml)')
ylabel('Fluxo [lps]')
xlim(x)
subplot(4,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x)
subplot(4,1,3)
plot(t,Sinal.Dado(:,4))
ylabel('Volume [L]')
xlim(x)
subplot(4,1,4)
plot(t,Sinal.Dado(:,3))
ylabel('P150 [cmH2O]')
xlabel('Tempo (s)')
xlim(x)
Sinal = VCV_R20C50_500ml;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
fig=gcf;
fig.Position(3:4)=[1080,400];
subplot(4,1,1)
plot(t,Sinal.Dado(:,1))
title('VCV R20C50 ( 500 ml)')
ylabel('Fluxo [lps]')
xlim(x)
subplot(4,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x)
subplot(4,1,3)
plot(t,Sinal.Dado(:,4))
ylabel('Volume [L]')
xlim(x)
subplot(4,1,4)
plot(t,Sinal.Dado(:,3))
ylabel('P150 [cmH2O]')
xlabel('Tempo (s)')
xlim(x)
Sinal = VCV_R5C20_500ml;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
fig=gcf;
fig.Position(3:4)=[1080,400];
subplot(4,1,1)
plot(t,Sinal.Dado(:,1))
title('VCV R5C20 ( 500 ml)')
ylabel('Fluxo [lps]')
xlim(x)
subplot(4,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x)
subplot(4,1,3)
plot(t,Sinal.Dado(:,4))
ylabel('Volume [L]')
xlim(x)
subplot(4,1,4)
plot(t,Sinal.Dado(:,3))
ylabel('P150 [cmH2O]')
xlabel('Tempo (s)')
xlim(x)
Sinal = VCV_R20C20_500ml;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
fig=gcf;
fig.Position(3:4)=[1080,400];
subplot(4,1,1)
plot(t,Sinal.Dado(:,1))
title('VCV R20C20 ( 500 ml)')
ylabel('Fluxo [lps]')
xlim(x)
subplot(4,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x)
subplot(4,1,3)
plot(t,Sinal.Dado(:,4))
ylabel('Volume [L]')
xlim(x)
subplot(4,1,4)
plot(t,Sinal.Dado(:,3))
ylabel('P150 [cmH2O]')
xlabel('Tempo (s)')
xlim(x)
Sinal = VCV_R20C20_300ml;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
fig=gcf;
fig.Position(3:4)=[1080,400];
subplot(4,1,1)
plot(t,Sinal.Dado(:,1))
title('VCV R20C20 ( 300 ml)')
ylabel('Fluxo [lps]')
xlim(x)
subplot(4,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x)
subplot(4,1,3)
plot(t,Sinal.Dado(:,4))
ylabel('Volume [L]')
xlim(x)
subplot(4,1,4)
plot(t,Sinal.Dado(:,3))
ylabel('P150 [cmH2O]')
xlabel('Tempo (s)')
xlim(x)
Sinal = VCV_R50C20_300ml;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
fig=gcf;
fig.Position(3:4)=[1080,400];
subplot(4,1,1)
plot(t,Sinal.Dado(:,1))
title('VCV R50C20 ( 300 ml)')
ylabel('Fluxo [lps]')
xlim(x)
subplot(4,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x)
subplot(4,1,3)
plot(t,Sinal.Dado(:,4))
ylabel('Volume [L]')
xlim(x)
subplot(4,1,4)
plot(t,Sinal.Dado(:,3))
ylabel('P150 [cmH2O]')
xlabel('Tempo (s)')
xlim(x)
Sinal = VCV_R50C10_300ml;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
fig=gcf;
fig.Position(3:4)=[1080,400];
subplot(4,1,1)
plot(t,Sinal.Dado(:,1))
title('VCV R50C10 ( 300 ml)')
ylabel('Fluxo [lps]')
xlim(x)
subplot(4,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x)
subplot(4,1,3)
plot(t,Sinal.Dado(:,4))
ylabel('Volume [L]')
xlim(x)
subplot(4,1,4)
plot(t,Sinal.Dado(:,3))
ylabel('P150 [cmH2O]')
xlabel('Tempo (s)')
xlim(x)
Sinal = VCV_R20C10_200ml;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
fig=gcf;
fig.Position(3:4)=[1080,400];
subplot(4,1,1)
plot(t,Sinal.Dado(:,1))
title('VCV R20C10 ( 200 ml)')
ylabel('Fluxo [lps]')
xlim(x)
subplot(4,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x)
subplot(4,1,3)
plot(t,Sinal.Dado(:,4))
ylabel('Volume [L]')
xlim(x)
subplot(4,1,4)
plot(t,Sinal.Dado(:,3))
ylabel('P150 [cmH2O]')
xlabel('Tempo (s)')
xlim(x)
Sinal = PCV_R5C50_10cmH2O;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
fig=gcf;
fig.Position(3:4)=[1080,400];
subplot(4,1,1)
plot(t,Sinal.Dado(:,1))
title('PCV R5C50 ( 10cmH2O)')
ylabel('Fluxo [lps]')
xlim(x)
subplot(4,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x)
subplot(4,1,3)
plot(t,Sinal.Dado(:,4))
ylabel('Volume [L]')
xlim(x)
subplot(4,1,4)
plot(t,Sinal.Dado(:,3))
ylabel('P150 [cmH2O]')
xlabel('Tempo (s)')
xlim(x)
Sinal = PCV_R20C50_15cmH2O;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
fig=gcf;
fig.Position(3:4)=[1080,400];
subplot(4,1,1)
plot(t,Sinal.Dado(:,1))
title('PCV R20C50 ( 15cmH2O)')
ylabel('Fluxo [lps]')
xlim(x)
subplot(4,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x)
subplot(4,1,3)
plot(t,Sinal.Dado(:,4))
ylabel('Volume [L]')
xlim(x)
subplot(4,1,4)
plot(t,Sinal.Dado(:,3))
ylabel('P150 [cmH2O]')
xlabel('Tempo (s)')
xlim(x)
Sinal = PCV_R5C20_25cmH2O;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
fig=gcf;
fig.Position(3:4)=[1080,400];
subplot(4,1,1)
plot(t,Sinal.Dado(:,1))
title('PCV R5C20 ( 25cmH2O)')
ylabel('Fluxo [lps]')
xlim(x)
subplot(4,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x)
subplot(4,1,3)
plot(t,Sinal.Dado(:,4))
ylabel('Volume [L]')
xlim(x)
subplot(4,1,4)
plot(t,Sinal.Dado(:,3))
ylabel('P150 [cmH2O]')
xlabel('Tempo (s)')
xlim(x)
Sinal = PCV_R20C20_25cmH2O;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
fig=gcf;
fig.Position(3:4)=[1080,400];
subplot(4,1,1)
plot(t,Sinal.Dado(:,1))
title('PCV R20C20 ( 25cmH2O)')
ylabel('Fluxo [lps]')
xlim(x)
subplot(4,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x)
subplot(4,1,3)
plot(t,Sinal.Dado(:,4))
ylabel('Volume [L]')
xlim(x)
subplot(4,1,4)
plot(t,Sinal.Dado(:,3))
ylabel('P150 [cmH2O]')
xlabel('Tempo (s)')
xlim(x)
Sinal = PCV_R20C20_15cmH2O;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
fig=gcf;
fig.Position(3:4)=[1080,400];
subplot(4,1,1)
plot(t,Sinal.Dado(:,1))
title('PCV R20C20 ( 15cmH2O)')
ylabel('Fluxo [lps]')
xlim(x)
subplot(4,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x)
subplot(4,1,3)
plot(t,Sinal.Dado(:,4))
ylabel('Volume [L]')
xlim(x)
subplot(4,1,4)
plot(t,Sinal.Dado(:,3))
ylabel('P150 [cmH2O]')
xlabel('Tempo (s)')
xlim(x)
Sinal = PCV_R50C20_25cmH2O;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
fig=gcf;
fig.Position(3:4)=[1080,400];
subplot(4,1,1)
plot(t,Sinal.Dado(:,1))
title('PCV R50C20 ( 25cmH2O)')
ylabel('Fluxo [lps]')
xlim(x)
subplot(4,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x)
subplot(4,1,3)
plot(t,Sinal.Dado(:,4))
ylabel('Volume [L]')
xlim(x)
subplot(4,1,4)
plot(t,Sinal.Dado(:,3))
ylabel('P150 [cmH2O]')
xlabel('Tempo (s)')
xlim(x)
Sinal = PCV_R50C10_30cmH2O;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
fig=gcf;
fig.Position(3:4)=[1080,400];
subplot(4,1,1)
plot(t,Sinal.Dado(:,1))
title('PCV R50C10 ( 30cmH2O)')
ylabel('Fluxo [lps]')
xlim(x)
subplot(4,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x)
subplot(4,1,3)
plot(t,Sinal.Dado(:,4))
ylabel('Volume [L]')
xlim(x)
subplot(4,1,4)
plot(t,Sinal.Dado(:,3))
ylabel('P150 [cmH2O]')
xlabel('Tempo (s)')
xlim(x)
Sinal = PCV_R20C10_25cmH2O;
t = [0:.0025:.0025*(size(Sinal.Dado(:,1))-1)];
x = [t(Trechos(22)) t(Trechos(26))];
fig=gcf;
fig.Position(3:4)=[1080,400];
subplot(4,1,1)
plot(t,Sinal.Dado(:,1))
title('PCV R20C10 ( 25cmH2O)')
ylabel('Fluxo [lps]')
xlim(x)
subplot(4,1,2)
plot(t,Sinal.Dado(:,2))
ylabel('Pboca [cmH2O]')
xlim(x)
subplot(4,1,3)
plot(t,Sinal.Dado(:,4))
ylabel('Volume [L]')
xlim(x)
subplot(4,1,4)
plot(t,Sinal.Dado(:,3))
ylabel('P150 [cmH2O]')
xlabel('Tempo (s)')
xlim(x)